package com.ruoyi.system.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.ruoyi.common.annotation.Excel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

/**
 * 订单对象 bdm_order
 *
 * @author ruoyi
 * @date 2024-12-13
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class BdmOrder implements Order{
    private static final long serialVersionUID = 1L;

    /**
     * $column.columnComment
     */
    private String id;

    /**
     * 用户id
     */
    @Excel(name = "用户id")
    private Long userId;

    /**
     * 用户姓名
     */
    @Excel(name = "用户姓名")
    private String userName;

    /**
     * 用户手机号
     */
    @Excel(name = "用户手机号")
    private String phoneNumber;

    /**
     * 实付金额
     */
    @Excel(name = "实付金额")
    private String payMoney;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date paymentTime;

    /**
     * 配送费
     */
    @Excel(name = "配送费")
    private String deliveryCost;

    /**
     * 项目状态（1待发货，2配送中，3待收货，4已完成,5已退单,6已关闭）
     */
    @Excel(name = "项目状态", readConverterExp = "1=待发货，2配送中，3待收货，4已完成,5已退单,6已关闭")
    private Long orderStatus;

    /**
     * 是否删除（0存在，1删除）
     */
    private Long delFlag;

    /**
     * 商户订单号
     */
    @Excel(name = "商户订单号")
    private String outTradeNo;

    /**
     * 微信支付订单号
     */
    @Excel(name = "微信支付订单号")
    private String transactionId;

    /**
     * 商户退款单号
     */
    @Excel(name = "商户退款单号")
    private String outRefundNo;

    @Excel(name = "商品名称")
    private String goodNames;

    /**
     * 收货人姓名
     */
    @Excel(name = "收货人姓名")
    private String receiveName;

    /**
     * 收货地址
     */
    @Excel(name = "收货地址")
    private String receiveAddress;

    /**
     * 收货人电话
     */
    @Excel(name = "收货人电话")
    private String receivePhonenum;

    /**
     * 收货地址经度
     */
    @Excel(name = "收货地址经度")
    private String receiveLongitude;

    /**
     * 收货地址纬度
     */
    @Excel(name = "收货地址纬度")
    private String receiveLatitude;

    /**
     * 发货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "发货时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date sendTime;

    /**
     * 收货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "收货时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date receiveTime;

    /**
     * 订单类型
     */
    @Excel(name = "订单类型")
    private Long orderType;

    /**
     * 配送方式（1普通配送，2加急配送）
     */
    @Excel(name = "配送方式", readConverterExp = "1=普通配送，2加急配送")
    private Long deliveryType;

    /**
     * 收货备注
     */
    @Excel(name = "收货备注")
    private String receiveRemark;

    /**
     * 收货确认图片
     */
    @Excel(name = "收货确认图片")
    private String receiveImgUrl;

    /**
     * 会员卡id
     */
    @Excel(name = "会员卡id")
    private String memberId;


    /**
     * 本单获取积分
     */
    @Excel(name = "本单获取积分")
    private String gainIntegral;

    /**
     * 本单扣除积分
     */
    @Excel(name = "本单扣除积分")
    private String deductIntegral;


    /**
     * 支付方式
     */
    @Excel(name = "支付方式")
    private Long payType;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 微信支付商户单号 */
    @Excel(name = "微信支付商户单号")
    private String fakeId;

    /** 微信支付交易单号 */
    @Excel(name = "微信支付交易单号")
    private String nativeId;


    /**
     * 留言
     */
    private String remark;

    /**
     * 聚水潭订单号
     */
    private String oId;

    /**
     * 物流公司名称
     */
    private String logisticsCompany;

    /**
     * 物流单号
     */
    @JsonProperty("lId")
    private String lId;

    /**
     * 快递编码
     */
    private String lcId;

    /** 购买订单 前会员名称 */
    private String beforMemberName;

    /** 购买订单前 级别 1vip 2svip  */
    private Long beforMemberLevel;

    /** 购买订单前 代理等级 3共享店主 4联创 5区域运营 6总裁  */
    private Long beforMemberAgencyLevel;

    /** 购买订单前 代理名称 */
    private String beforMemberAgencyLevelName;


    @Override
    public String payId() {
        return this.id;
    }

    @Override
    public Date payDate() {
        return this.paymentTime;
    }
}
